package pos.dominio;

import java.util.List;

public class Tendencia extends Carta{

	// Lista de los PrincOlfativos que la compone
	/** @uml.property  name="listPrincipiosOlfativos" */
	private List<PrincipioOlfativo> listaPrinOlfativos;
	/** Getter of the property <tt>listPrincipiosOlfativos</tt> * @return  Returns the listPrincipiosOlfativos. * @uml.property  name="listPrincipiosOlfativos" */
	public List<PrincipioOlfativo> getPrincipiosOlfativos(){
		return listaPrinOlfativos;
	}
	/** Setter of the property <tt>listPrincipiosOlfativos</tt> * @param listPrincipiosOlfativos  The listPrincipiosOlfativos to set. * @uml.property  name="listPrincipiosOlfativos" */
	public void setPrincipiosOlfativos(List<PrincipioOlfativo> listPrincipiosOlfativos){
		this.listaPrinOlfativos = listPrincipiosOlfativos;
	}

	//	Constructor
	public Tendencia(List<PrincipioOlfativo> listaPrinOlf){
		super();
		this.listaPrinOlfativos = listaPrinOlf;
	}

	//Su igualdad se establece por el conjunto de Principios Olfativos que la forman.
	@Override
	public int hashCode(){
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result	+ ((listaPrinOlfativos == null) ? 0 : listaPrinOlfativos.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj){
		if(this == obj)
			return true;
		if(!super.equals(obj))
			return false;
		if(getClass() != obj.getClass())
			return false;
		Tendencia other = (Tendencia) obj;
		if(listaPrinOlfativos == null){
			if(other.listaPrinOlfativos != null)
				return false;
		}else if(!listaPrinOlfativos.equals(other.listaPrinOlfativos))
			return false;
		return true;
	}
	@Override
	public String toString(){
		String s = new String();
		s += "Carta Tendencia: Lista de PrincipiosOlfativos = [";
		int tam = this.getPrincipiosOlfativos().size();
		for(int i = 0;i < tam - 1;i++){
			s += this.getPrincipiosOlfativos().get(i) + ", ";
		}
		s += this.getPrincipiosOlfativos().get(tam) + "].";
		return s;
	}
	@Override
	public Tendencia clone() {
		Tendencia copia = null;
		copia = (Tendencia) super.clone();
		return copia;
	}
	public int compareTo(Tendencia obj){
		int comp = super.compareTo(obj);	//Si poseen mismo nombre
		if(comp == 0){
			boolean b = true;
			for(int i = 0;i < obj.getPrincipiosOlfativos().size() && b; i++){ //Si poseen los mismos PrinOlf
				PrincipioOlfativo po1 = obj.getPrincipiosOlfativos().get(i);
				PrincipioOlfativo po2 = this.getPrincipiosOlfativos().get(i);
				comp = po1.compareTo(po2);
				if(comp != 0){
					b = false;
				}
			}
		}
		return comp;
	}

}